%%
% clear;clc;close all;
% load("matlab_FIR.mat");
 
% %% 用MATLAB产生1.2kHz和4.5kHz的混频信号
% Fs=10000;%采样频率为10KHz
% N=1024;%采样点数
% N1=0:1/Fs:N/Fs-1/Fs;%以频率Fs采1024个点的数据
% s=sin(1200*2*pi*N1)+sin(4500*2*pi*N1)+2;
% figure(1);
% plot(N1,s);
 %% 用MATLAB产生5kHz和3MHz的混频信号
Fs=10000000;%采样频率为10MHz
f1=1300000;  %1300k
f2=3000000;
N=1024;%采样点数
N1=0:1/Fs:N/Fs-1/Fs;%以频率Fs采1024个点的数据
s=sin(f1*2*pi*N1)+sin(f2*2*pi*N1)+2;
figure(1);
plot(N1,s);
%% 将波形数据进行量化， 并转换为十六进制保存到mem.txt中
fidc=fopen('memh_1m_3m.txt','wt');
%将结果写入mem.txt文件，便于modelsim使用
for x=1:N
    y=round((s(x)/4)*2047);
    fprintf(fidc,'%03x\n',y);%四舍五入取整后写入mem.txt文件
end
fclose(fidc);
test=s*2047/4;
plot(N1,test);
 
%% 在MATLAB中用filterDesigner命令调出滤波器设计工具
%选择低通滤波器
%选择Hamming窗
%设定阶数10阶
%采样频率5MHz
%截止频率100kHz
%选择文件->导出，将滤波器系数和FIR函数导出到工作区
 
%% 检验FIR滤波器滤波效果
d=filter(FIR,s);
figure(2);
plot(N1,d);
 
%%对导出的系数进行量化取整
%对导入的系数Num进行量化， 乘以2^10后取整
Num_int=round(Num*2^10);
disp(Num_int);
 
%需要注意的是， 设计的FIR滤波器的系数有一个特点， 就是系数之和为1
%验证
sum_Num=sum(Num);
disp(sum_Num);


 %% 用MATLAB产生1kHz信号 采样频率为10k
Fs=6000;%采样频率为6KHz
f1=1000;  %1k
N=1024;%采样点数
N1=0:1/Fs:N/Fs-1/Fs;%以频率Fs采1024个点的数据
s=sin(f1*2*pi*N1)+1;
figure(1);
plot(N1,s);
%% 将波形数据进行量化， 并转换为十六进制保存到mem.txt中
fidc=fopen('fft_input_sin.txt','wt');
%将结果写入mem.txt文件，便于modelsim使用
for x=1:N
    y=round((s(x)/4)*2047);
    fprintf(fidc,'%03x\n',y);%四舍五入取整后写入mem.txt文件
end
fclose(fidc);
test=s*2047/4;
plot(N1,test);